package jfxtras.internal.scene.control.skin.agenda.icalendar.base24hour.popup;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Test;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import jfxtras.icalendarfx.VCalendar;
import jfxtras.icalendarfx.components.VEvent;
import jfxtras.icalendarfx.properties.calendar.Version;
import jfxtras.icalendarfx.properties.component.descriptive.Categories;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.Frequency;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.FrequencyType;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.RecurrenceRuleValue;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.Until;
import jfxtras.icalendarfx.properties.component.recurrence.rrule.byxxx.ByDay;
import jfxtras.internal.scene.control.skin.agenda.icalendar.base24hour.CategorySelectionGridPane;
import jfxtras.scene.control.LocalDateTextField;
import jfxtras.scene.control.LocalDateTimeTextField;
import jfxtras.scene.control.agenda.icalendar.ICalendarAgenda;
import jfxtras.scene.control.agenda.icalendar.ICalendarStaticComponents;
import jfxtras.scene.control.agenda.icalendar.agenda.AgendaTestAbstract;
import jfxtras.scene.control.agenda.icalendar.editors.ChangeDialogOption;
import jfxtras.test.TestUtil;
public class PopupReviseAllTest extends VEventPopupTestBase
{
@Test
public void canEditSimpleVEvent()
{
VEvent vevent = ICalendarStaticComponents.getDaily1();
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2015, 11, 9, 10, 0), // start selected instance
LocalDateTime.of(2015, 11, 9, 11, 0), // end selected instance
AgendaTestAbstract.CATEGORIES);
});
// Make changes
TextField summaryTextField = find("#summaryTextField");
summaryTextField.setText("new summary");
// Save changes
clickOn("#saveComponentButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
String dtStamp = getEditComponentPopup().iTIPMessagesProperty().get().get(0).getVEvents().get(0).getDateTimeStamp().toString();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:group05" + System.lineSeparator() +
"DTSTART:20151109T100000" + System.lineSeparator() +
"DTEND:20151109T110000" + System.lineSeparator() +
"DESCRIPTION:Daily1 Description" + System.lineSeparator() +
"SUMMARY:new summary" + System.lineSeparator() +
dtStamp + System.lineSeparator() +
"UID:20150110T080000-004@jfxtras.org" + System.lineSeparator() +
"RRULE:FREQ=DAILY" + System.lineSeparator() +
"ORGANIZER;CN=Papa Smurf:mailto:papa@smurf.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = getEditComponentPopup().iTIPMessagesProperty().get().stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test
public void canEditDescribableProperties()
{
VEvent vevent = ICalendarStaticComponents.getDaily1();
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2016, 5, 15, 10, 0),
LocalDateTime.of(2016, 5, 15, 11, 0),
categories());
});
// Get properties
LocalDateTimeTextField startDateTimeTextField = find("#startDateTimeTextField");
LocalDateTimeTextField endDateTimeTextField = find("#endDateTimeTextField");
CheckBox wholeDayCheckBox = find("#wholeDayCheckBox");
TextField summaryTextField = find("#summaryTextField");
TextArea descriptionTextArea = find("#descriptionTextArea");
TextField locationTextField = find("#locationTextField");
TextField categoryTextField = find("#categoryTextField");
CategorySelectionGridPane categorySelectionGridPane = find("#categorySelectionGridPane");
// Check initial state
assertEquals(LocalDateTime.of(2016, 5, 15, 10, 00), startDateTimeTextField.getLocalDateTime());
assertEquals(LocalDateTime.of(2016, 5, 15, 11, 00), endDateTimeTextField.getLocalDateTime());
assertTrue(startDateTimeTextField.isVisible());
assertTrue(endDateTimeTextField.isVisible());
assertEquals("Daily1 Summary", summaryTextField.getText());
assertEquals("Daily1 Description", descriptionTextArea.getText());
assertEquals("group05", categoryTextField.getText());
assertFalse(wholeDayCheckBox.isSelected());
// Edit and check properties
TestUtil.runThenWaitForPaintPulse( () -> wholeDayCheckBox.setSelected(true) );
LocalDateTextField startDateTextField = find("#startDateTextField");
LocalDateTextField endDateTextField = find("#endDateTextField");
assertEquals(LocalDate.of(2016, 5, 15), startDateTextField.getLocalDate());
assertEquals(LocalDate.of(2016, 5, 16), endDateTextField.getLocalDate());
assertTrue(startDateTextField.isVisible());
assertTrue(endDateTextField.isVisible());
TestUtil.runThenWaitForPaintPulse( () -> wholeDayCheckBox.setSelected(false) );
assertTrue(startDateTimeTextField.isVisible());
assertTrue(endDateTimeTextField.isVisible());
// Make changes
startDateTimeTextField.setLocalDateTime(LocalDateTime.of(2016, 5, 15, 8, 0));
summaryTextField.setText("new summary");
descriptionTextArea.setText("new description");
locationTextField.setText("new location");
TestUtil.runThenWaitForPaintPulse(() -> categorySelectionGridPane.setCategorySelected(11));
assertEquals("group11", categoryTextField.getText());
categoryTextField.setText("new group name");
// save to all
clickOn("#saveComponentButton");
ComboBox<ChangeDialogOption> comboBox = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> {
comboBox.getSelectionModel().select(ChangeDialogOption.ALL);
});
clickOn("#changeDialogOkButton");
// test iTIP message
List<VCalendar> vMessages = getEditComponentPopup().iTIPMessagesProperty().get();
assertEquals(1, vMessages.size());
VCalendar vMessage = vMessages.get(0);
assertEquals(1, vMessage.getVEvents().size());
VEvent revisedVEvent = vMessage.getVEvents().get(0);
VEvent expectedRevisedVEvent = ICalendarStaticComponents.getDaily1();
expectedRevisedVEvent.setCategories(null);
expectedRevisedVEvent
.withDateTimeStart(LocalDateTime.of(2015, 11, 9, 8, 0))
.withDateTimeEnd(LocalDateTime.of(2015, 11, 9, 9, 0))
.withSummary("new summary")
.withDescription("new description")
.withLocation("new location")
.withCategories(Arrays.asList(new Categories("new group name")))
.withDateTimeStamp(revisedVEvent.getDateTimeStamp())
.withSequence(1);
assertEquals(expectedRevisedVEvent, revisedVEvent);
String iTIPMessage = vMessages.stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
String dtStamp = getEditComponentPopup().iTIPMessagesProperty().get().get(0).getVEvents().get(0).getDateTimeStamp().toString();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:new group name" + System.lineSeparator() +
"DTSTART:20151109T080000" + System.lineSeparator() +
"DTEND:20151109T090000" + System.lineSeparator() +
"DESCRIPTION:new description" + System.lineSeparator() +
"SUMMARY:new summary" + System.lineSeparator() +
dtStamp + System.lineSeparator() +
"UID:20150110T080000-004@jfxtras.org" + System.lineSeparator() +
"RRULE:FREQ=DAILY" + System.lineSeparator() +
"ORGANIZER;CN=Papa Smurf:mailto:papa@smurf.org" + System.lineSeparator() +
"LOCATION:new location" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test
public void canChangeFrequencyWeekly()
{
VEvent vevent = ICalendarStaticComponents.getDaily1();
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2016, 5, 15, 10, 0),
LocalDateTime.of(2016, 5, 15, 11, 0),
AgendaTestAbstract.CATEGORIES);
});
// Get properties
clickOn("#recurrenceRuleTab");
ComboBox<FrequencyType> frequencyComboBox = find("#frequencyComboBox");
// Check initial state
assertEquals(FrequencyType.DAILY, frequencyComboBox.getSelectionModel().getSelectedItem());
// Change property and verify state change
// WEEKLY
TestUtil.runThenWaitForPaintPulse(() -> frequencyComboBox.getSelectionModel().select(FrequencyType.WEEKLY));
// Days of the week properties
CheckBox su = (CheckBox) find("#sundayCheckBox");
CheckBox mo = (CheckBox) find("#mondayCheckBox");
CheckBox tu = (CheckBox) find("#tuesdayCheckBox");
CheckBox we = (CheckBox) find("#wednesdayCheckBox");
CheckBox th = (CheckBox) find("#thursdayCheckBox");
CheckBox fr = (CheckBox) find("#fridayCheckBox");
CheckBox sa = (CheckBox) find("#saturdayCheckBox");
// Check initial state
HBox weeklyHBox = find("#weeklyHBox");
assertTrue(weeklyHBox.isVisible());
assertTrue(su.isSelected());
assertFalse(mo.isSelected());
assertFalse(tu.isSelected());
assertFalse(we.isSelected());
assertFalse(th.isSelected());
assertFalse(fr.isSelected());
assertFalse(sa.isSelected());
// Toggle each day of week and check
// Sunday already selected
TestUtil.runThenWaitForPaintPulse( () -> mo.setSelected(true));
assertTrue(mo.isSelected());
TestUtil.runThenWaitForPaintPulse( () -> tu.setSelected(true));
assertTrue(tu.isSelected());
TestUtil.runThenWaitForPaintPulse( () -> we.setSelected(true));
assertTrue(we.isSelected());
TestUtil.runThenWaitForPaintPulse( () -> th.setSelected(true));
assertTrue(th.isSelected());
TestUtil.runThenWaitForPaintPulse( () -> fr.setSelected(true));
assertTrue(fr.isSelected());
TestUtil.runThenWaitForPaintPulse( () -> sa.setSelected(true));
assertTrue(sa.isSelected());
// save changes to all
clickOn("#saveRepeatButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
// test iTIP message
List<VCalendar> messages = getEditComponentPopup().iTIPMessagesProperty().get();
assertEquals(1, messages.size());
VCalendar message = messages.get(0);
assertEquals(1, message.getVEvents().size());
VEvent revisedVEvent = message.getVEvents().get(0);
RecurrenceRuleValue rrule = revisedVEvent.getRecurrenceRule().getValue();
// check frequency
Frequency f = rrule.getFrequency();
assertEquals(FrequencyType.WEEKLY, f.getValue());
// check ByDay
assertEquals(1, rrule.getByRules().size());
ByDay rule = (ByDay) rrule.lookupByRule(ByDay.class);
List<DayOfWeek> allDaysOfWeek = Arrays.asList(DayOfWeek.values());
List<DayOfWeek> daysOfWeek = rule.dayOfWeekWithoutOrdinalList();
Collections.sort(daysOfWeek);
assertEquals(allDaysOfWeek, daysOfWeek);
VEvent expectedRevisedVEvent = ICalendarStaticComponents.getDaily1()
.withRecurrenceRule("FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA")
.withDateTimeStamp(revisedVEvent.getDateTimeStamp())
.withSequence(1);
assertEquals(expectedRevisedVEvent, revisedVEvent);
}
@Test
public void canChangeFrequencyMonthly()
{
VEvent vevent = ICalendarStaticComponents.getDaily1();
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2016, 5, 15, 10, 0),
LocalDateTime.of(2016, 5, 15, 11, 0),
AgendaTestAbstract.CATEGORIES);
});
// Get properties
clickOn("#recurrenceRuleTab");
ComboBox<FrequencyType> frequencyComboBox = find("#frequencyComboBox");
TestUtil.runThenWaitForPaintPulse(() -> frequencyComboBox.getSelectionModel().select(FrequencyType.MONTHLY));
// Monthly properties
RadioButton dayOfMonth = find("#dayOfMonthRadioButton");
RadioButton dayOfWeek = find("#dayOfWeekRadioButton");
// Check initial state
assertTrue(dayOfMonth.isSelected());
assertFalse(dayOfWeek.isSelected());
// Toggle monthly options and check
TestUtil.runThenWaitForPaintPulse(() -> dayOfWeek.setSelected(true));
assertFalse(dayOfMonth.isSelected());
assertTrue(dayOfWeek.isSelected());
clickOn("#saveRepeatButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
// test iTIP message
List<VCalendar> messages = getEditComponentPopup().iTIPMessagesProperty().get();
assertEquals(1, messages.size());
VCalendar message = messages.get(0);
assertEquals(1, message.getVEvents().size());
VEvent revisedVEvent = message.getVEvents().get(0);
VEvent expectedRevisedVEvent = ICalendarStaticComponents.getDaily1()
.withDateTimeStart("20151115T100000")
.withDateTimeEnd("20151115T110000")
.withRecurrenceRule("FREQ=MONTHLY;BYDAY=3SU")
.withDateTimeStamp(revisedVEvent.getDateTimeStamp())
.withSequence(1);
assertEquals(expectedRevisedVEvent, revisedVEvent);
}
@Test
public void canChangeFrequencyYearly()
{
VEvent vevent = ICalendarStaticComponents.getDaily1();
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2016, 5, 15, 10, 0),
LocalDateTime.of(2016, 5, 15, 11, 0),
AgendaTestAbstract.CATEGORIES);
});
// Get properties
clickOn("#recurrenceRuleTab");
ComboBox<FrequencyType> frequencyComboBox = find("#frequencyComboBox");
TestUtil.runThenWaitForPaintPulse(() -> frequencyComboBox.getSelectionModel().select(FrequencyType.YEARLY));
clickOn("#saveRepeatButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
// test iTIP message
List<VCalendar> messages = getEditComponentPopup().iTIPMessagesProperty().get();
assertEquals(1, messages.size());
VCalendar message = messages.get(0);
assertEquals(1, message.getVEvents().size());
VEvent revisedVEvent = message.getVEvents().get(0);
VEvent expectedRevisedVEvent = ICalendarStaticComponents.getDaily1()
.withRecurrenceRule("FREQ=YEARLY")
.withDateTimeStamp(revisedVEvent.getDateTimeStamp())
.withSequence(1);
assertEquals(expectedRevisedVEvent, revisedVEvent);
}
@Test
// @Ignore // TestFX4
public void canChangeWholeDayToTimeBased()
{
VEvent vevent = ICalendarStaticComponents.getWholeDayDaily3();
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDate.of(2015, 11, 11), // start selected instance
LocalDate.of(2015, 11, 13), // end selected instance
AgendaTestAbstract.CATEGORIES);
});
CheckBox wholeDayCheckBox = find("#wholeDayCheckBox");
assertTrue(wholeDayCheckBox.isSelected());
LocalDateTextField start1 = find("#startDateTextField");
assertEquals(LocalDate.of(2015, 11, 11), start1.getLocalDate());
clickOn(wholeDayCheckBox); // turn off wholeDayCheckBox
LocalDateTimeTextField start2 = find("#startDateTimeTextField");
assertEquals(LocalDateTime.of(2015, 11, 11, 10, 0), start2.getLocalDateTime());
start2.setLocalDateTime(LocalDateTime.of(2015, 11, 11, 13, 0)); // adds 3 hour shift
LocalDateTimeTextField end2 = find("#endDateTimeTextField");
assertEquals(LocalDateTime.of(2015, 11, 12, 14, 0), end2.getLocalDateTime());
end2.setLocalDateTime(LocalDateTime.of(2015, 11, 11, 14, 0)); // make 1 hour long
// Save changes
clickOn("#saveComponentButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
String dtStamp = getEditComponentPopup().iTIPMessagesProperty().get().get(0).getVEvents().get(0).getDateTimeStamp().toString();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:group06" + System.lineSeparator() +
dtStamp + System.lineSeparator() +
"UID:20150110T080000-010@jfxtras.org" + System.lineSeparator() +
"RRULE:UNTIL=20151123T210000Z;FREQ=DAILY;INTERVAL=3" + System.lineSeparator() +
"DTSTART;TZID=America/Los_Angeles:20151108T130000" + System.lineSeparator() +
"DTEND;TZID=America/Los_Angeles:20151108T140000" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = getEditComponentPopup().iTIPMessagesProperty().get().stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test
public void canChangeToWholeDayAll()
{
VEvent vevent = ICalendarStaticComponents.getDaily1()
.withLocation("Here");
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2016, 5, 15, 10, 0), // start selected instance
LocalDateTime.of(2016, 5, 15, 11, 0), // end selected instance
AgendaTestAbstract.CATEGORIES);
});
CheckBox wholeDayCheckBox = find("#wholeDayCheckBox");
clickOn(wholeDayCheckBox);
LocalDateTextField start = find("#startDateTextField");
assertEquals(LocalDate.of(2016, 5, 15), start.getLocalDate());
start.setLocalDate(LocalDate.of(2016, 5, 16)); // adds 1 day shift
// Save changes
clickOn("#saveComponentButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
String dtStamp = getEditComponentPopup().iTIPMessagesProperty().get().get(0).getVEvents().get(0).getDateTimeStamp().toString();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:group05" + System.lineSeparator() +
"DTSTART;VALUE=DATE:20151110" + System.lineSeparator() +
"DTEND;VALUE=DATE:20151111" + System.lineSeparator() +
"DESCRIPTION:Daily1 Description" + System.lineSeparator() +
"SUMMARY:Daily1 Summary" + System.lineSeparator() +
dtStamp + System.lineSeparator() +
"UID:20150110T080000-004@jfxtras.org" + System.lineSeparator() +
"RRULE:FREQ=DAILY" + System.lineSeparator() +
"ORGANIZER;CN=Papa Smurf:mailto:papa@smurf.org" + System.lineSeparator() +
"LOCATION:Here" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = getEditComponentPopup().iTIPMessagesProperty().get().stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test // testing event that has LocalDate start on a different date that the zoned "Z" date challenges the popup UNTIL checker
public void canChangeUntilToForever()
{
Until until = new Until(ZonedDateTime.of(LocalDateTime.of(2015, 11, 19, 23, 30), ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("Z")));
VEvent vevent = new VEvent()
.withDateTimeStart(LocalDateTime.of(2015, 11, 7, 23, 30))
.withDateTimeEnd(LocalDateTime.of(2015, 11, 8, 0, 30))
.withDateTimeStamp("20150110T080000Z")
.withSummary("Example Daily Event")
.withRecurrenceRule(new RecurrenceRuleValue()
.withFrequency(FrequencyType.DAILY)
.withUntil(until))
.withOrganizer("mailto:david@balsoftware.net")
.withUniqueIdentifier("exampleuid000jfxtras.org");
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2015, 11, 10, 23, 30), // start selected instance
LocalDateTime.of(2015, 11, 11, 0, 30), // end selected instance
AgendaTestAbstract.CATEGORIES);
});
// make changes
clickOn("#recurrenceRuleTab");
clickOn("#endNeverRadioButton");
// save changes
clickOn("#saveRepeatButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
String dtStamp = getEditComponentPopup().iTIPMessagesProperty().get().get(0).getVEvents().get(0).getDateTimeStamp().toString();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"DTSTART:20151107T233000" + System.lineSeparator() +
"DTEND:20151108T003000" + System.lineSeparator() +
dtStamp + System.lineSeparator() +
"SUMMARY:Example Daily Event" + System.lineSeparator() +
"RRULE:FREQ=DAILY" + System.lineSeparator() +
"ORGANIZER:mailto:david@balsoftware.net" + System.lineSeparator() +
"UID:exampleuid000jfxtras.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = getEditComponentPopup().iTIPMessagesProperty().get().stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
@Test
public void canChangeCountToForever()
{
VEvent vevent = ICalendarStaticComponents.getDaily1()
.withRecurrenceRule(new RecurrenceRuleValue()
.withFrequency(FrequencyType.DAILY)
.withCount(10));
TestUtil.runThenWaitForPaintPulse( () ->
{
getEditComponentPopup().setupData(
vevent,
LocalDateTime.of(2015, 11, 10, 10, 0), // start selected instance
LocalDateTime.of(2015, 11, 10, 11, 0), // end selected instance
AgendaTestAbstract.CATEGORIES);
});
// make changes
clickOn("#recurrenceRuleTab");
clickOn("#endNeverRadioButton");
// save changes
clickOn("#saveRepeatButton");
ComboBox<ChangeDialogOption> c = find("#changeDialogComboBox");
TestUtil.runThenWaitForPaintPulse( () -> c.getSelectionModel().select(ChangeDialogOption.ALL));
clickOn("#changeDialogOkButton");
String dtStamp = getEditComponentPopup().iTIPMessagesProperty().get().get(0).getVEvents().get(0).getDateTimeStamp().toString();
String expectediTIPMessage =
"BEGIN:VCALENDAR" + System.lineSeparator() +
"METHOD:REQUEST" + System.lineSeparator() +
"PRODID:" + ICalendarAgenda.DEFAULT_PRODUCT_IDENTIFIER + System.lineSeparator() +
"VERSION:" + Version.DEFAULT_ICALENDAR_SPECIFICATION_VERSION + System.lineSeparator() +
"BEGIN:VEVENT" + System.lineSeparator() +
"CATEGORIES:group05" + System.lineSeparator() +
"DTSTART:20151109T100000" + System.lineSeparator() +
"DTEND:20151109T110000" + System.lineSeparator() +
"DESCRIPTION:Daily1 Description" + System.lineSeparator() +
"SUMMARY:Daily1 Summary" + System.lineSeparator() +
dtStamp + System.lineSeparator() +
"UID:20150110T080000-004@jfxtras.org" + System.lineSeparator() +
"RRULE:FREQ=DAILY" + System.lineSeparator() +
"ORGANIZER;CN=Papa Smurf:mailto:papa@smurf.org" + System.lineSeparator() +
"SEQUENCE:1" + System.lineSeparator() +
"END:VEVENT" + System.lineSeparator() +
"END:VCALENDAR";
String iTIPMessage = getEditComponentPopup().iTIPMessagesProperty().get().stream()
.map(v -> v.toString())
.collect(Collectors.joining(System.lineSeparator()));
assertEquals(expectediTIPMessage, iTIPMessage);
}
}